package com.toune.dltools

import java.text.SimpleDateFormat
import java.util.*

/**
 * 返回指定的时间格式
 */
object DLTimeUtil {
    private const val Format = "yyyy-MM-dd HH:mm:ss"

    /* strTime要转换的string类型的时间，formatType要转换的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日
        // HH时mm分ss秒，
        // strTime的时间格式必须要与formatType的时间格式相同
        */
    fun stringToDate(strTime: String?): Date? {
        var date: Date? = null
        try {
            val formatter = SimpleDateFormat(Format)
            date = formatter.parse(strTime)
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return date
    }

    /* strTime要转换的string类型的时间，formatType要转换的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日
        // HH时mm分ss秒，
        // strTime的时间格式必须要与formatType的时间格式相同
        */
    fun stringToDate(strTime: String?, timeFormate: String?): Date? {
        var date: Date? = null
        try {
            val formatter = SimpleDateFormat(timeFormate)
            date = formatter.parse(strTime)
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return date
    }

    /**
     * 字符串转时间戳
     *
     * @param time
     * @return
     */
    fun getLongFromStr(time: String?): Long {
        val date = stringToDate(time)
        return date!!.time
    }

    /**
     * 字符串转时间戳
     *
     * @param time
     * @return
     */
    fun getLongFromStr(time: String?, timeFormate: String?): Long {
        val date = stringToDate(time, timeFormate)
        return date!!.time
    }

    /**
     * 夜半（23:00~1:00） —— 大概这个时间不睡觉的人，都有个孤独的灵魂。
     *
     *
     * 鸡鸣（1:00~3:00） —— 守夜不失时，信也。
     *
     *
     * 平旦（3:00~5:00）  —— 熬过了最黑暗，终于要迎来晨光。
     *
     *
     * 日出（5:00~7:00） —— 时不我待，只争朝夕。
     *
     *
     * 食时（7:00~9:00） ——  美食，从来都是叫醒自己的一剂良药。
     *
     *
     * 隅中（9:00~11:00） ——  如日方升，美好的事情在等着你。
     *
     *
     * 日中（11:00~13:00） ——  炊烟四起，饭后午休爽心魂。
     *
     *
     * 日昳（13:00~15:00） —— 困沌中醒来，调整好状态。
     *
     *
     * 晡时（15:00~17:00） —— 务愁日光西斜，要享受这大好时光。
     *
     *
     * 日入（17:00~19:00） ——  忙碌了一天，记得犒劳自己。
     *
     *
     * 黄昏（19:00~21:00） ——  日暮朦胧，早归家。
     *
     *
     * 人定（21:00~23:00） ——  今日事已毕，安歇入眠。
     *
     * @return
     */
    fun get24HourTime(): Array<String> {
        val hellos = arrayOf("日出", "时不我待，只争朝夕。")
        val instance = Calendar.getInstance()
        val i = instance[Calendar.HOUR_OF_DAY]
        when (i) {
            1, 2 -> {
                hellos[0] = "鸡鸣"
                hellos[1] = "守夜不失时，信也。"
            }
            3, 4 -> {
                hellos[0] = "平旦"
                hellos[1] = "熬过了最黑暗，终于要迎来晨光。"
            }
            5, 6 -> {
                hellos[0] = "日出"
                hellos[1] = "时不我待，只争朝夕。"
            }
            7, 8 -> {
                hellos[0] = "食时"
                hellos[1] = "美食，从来都是叫醒自己的一剂良药。"
            }
            9, 10 -> {
                hellos[0] = "隅中"
                hellos[1] = "如日方升，美好的事情在等着你。"
            }
            11, 12 -> {
                hellos[0] = "日中"
                hellos[1] = " 炊烟四起，饭后午休爽心魂。"
            }
            13, 14 -> {
                hellos[0] = "日昳"
                hellos[1] = "困沌中醒来，调整好状态。"
            }
            15, 16 -> {
                hellos[0] = "晡时"
                hellos[1] = "务愁日光西斜，要享受这大好时光。"
            }
            17, 18 -> {
                hellos[0] = "日入"
                hellos[1] = "忙碌了一天，记得犒劳自己。"
            }
            19, 20 -> {
                hellos[0] = "黄昏"
                hellos[1] = "日暮朦胧，早归家。"
            }
            21, 22 -> {
                hellos[0] = "人定"
                hellos[1] = "今日事已毕，安歇入眠。"
            }
            23, 0 -> {
                hellos[0] = "夜半"
                hellos[1] = "大概这个时间不睡觉的人，都有个孤独的灵魂。"
            }
        }
        return hellos
    }

    /**
     * 根据当前时间返回上午好，下午好等问候语
     *
     * @return
     */
    val helloFromTime: String
        get() {
            var hello = "上午好"
            val instance = Calendar.getInstance()
            val i = instance[Calendar.HOUR_OF_DAY]
            if (i >= 0 && i < 5) {
                hello = "凌晨早"
            } else if (i >= 5 && i <= 8) {
                hello = "早上好"
            } else if (i >= 9 && i <= 11) {
                hello = "上午好"
            } else if (i >= 12 && i <= 13) {
                hello = "中午好"
            } else if (i >= 14 && i <= 17) {
                hello = "下午好"
            } else if (i >= 18 && i <= 23) {
                hello = "晚上好"
            }
            return hello
        }


    /**
     * 获取当前时间
     */
    fun getCurTimeStr():String {
        return getCurTimeStr(Format)
    }

    fun getCurTimeStr(format: String): String {
        var simpFormat = SimpleDateFormat(format)
        return simpFormat.format(Date())
    }

    fun getStrFromLong(created: Long): String {
       return dateToStr(Date(created))
    }

    private fun dateToStr(date: Date): String {
        var simpFormat = SimpleDateFormat(Format)
        return simpFormat.format(date)
    }
}